Video and still image capture using a digital camera has become very prevalent. Video capture may be used for such applications as video conferencing, video editing, and distributed video training. Still image capture with a digital camera may be used for such applications as photo albums, photo editing, and compositing. Many components of hardware and software need to work seamlessly to both get the video data (also referred to as a video "stream") or the still image data from the hardware through the various layers of software on the personal computer (PC) and made visible on a display medium such as a monitor.
In many digital cameras, video or still image data is first stored on a local storage device in the image capture system as the digital camera is not tethered to the PC at all times (e.g., the user goes to a park to take pictures). Then, when the user returns to the location of the user's PC, the data is then transferred to the PC when the user connects the digital camera to the PC. It is often useful to provide a way to preview captured video or still images before the data is transferred to the PC, as the process of image transfer can be time consuming. This allows the user to be selective in what data the user transfers to the PC or leaves on the digital camera.
To provide a preview mechanism, the digital camera may either provide a viewfinder or a liquid crystal display (LCD). Many digital cameras include both, as the viewfinder offers more privacy of what is being filmed (e.g., only the user can see what is being filmed or being played back) and does not consume as much power as a LCD display while a LCD allows the user to operate the digital camera more easily when viewing playback (e.g., the user can control the fast forwarding, reverse, and pausing of the video without trying to look into the viewfinder at the same time) or allows more flexibility in the positioning of the camera for the capturing of a scene (e.g., the user can hold the camera above the user when the user is behind a crowd, and use the LCD to see what is being captured).
Typically, digital cameras capture each frame of a video or each still image in an 8-bit RGGB (red, green, green, and blue) format (also known as a Bayer pattern) and this converts it into a 24-bit RGB (red, green, and blue) format. In the 24-bit RGB image format, each pixel in the image is represented by the combination of an 8-bit value of red, an 8-bit value of green, and an 8-bit value of blue. Neither format is not suitable for display on an LCD, which uses a pattern of individual color components to form each pixel, so the images must be converted to a suitable LCD format. An exemplary format for use in LCD's is an 8-bit RGB diagonal mosaic, where each pixel is composed from a square of 4 individual component values that is viewed by the human eye as one single pixel.
One method used to perform the necessary image conversion first up-samples the 24-bit RGB format captured image to the same size as required by the display, and then maps the data to a particular pattern, such as the 8-bit RGB diagonal mosaic. During the mapping process, the up-sampled image is decimated (that is, values in the up-sampled image are thrown out).
FIG. 1 illustrates the current two-step process for converting a 24-bit RGB format image to a 8-bit RGB diagonal mosaic. Where the image data for a 24-bit image data 50 is composed of three separate matrices of 8-bit color data, one for each of the red 52, green 54, and blue 56 components. In FIG. 1, the 24-bit RGB image is an image that is 3 pixels wide by 3 pixels tall. Red pixel matrix 52 thus contains 9 red component values (at a size of 8-bits for each value), one for each of the 9 pixels in the image. Similarly, green and blue pixel matrices 54 and 56 also contain the green and blue component values, respectively, for the 9 pixels in the image.
The first step in the prior art method for converting a 24-bit RGB image to a format suitable for LCD display is to up-sample the 24-bit RGB image to an image size that is twice as large as the original image size. Thus, the 3.times.3 matrices are up-sampled to 6.times.6 matrices. Up-sampling may be performed in several ways. For example, red component values R(0,0) [where, the (i, j) coordinates are the (row, column) coordinates], R(0,1), R(1,0), and R(1,1) in red pixel matrix 62 may all be the same value as the red component value R(0,0) in red pixel matrix 52. Alternatively, red component values in the up-sampled matrix may be interpolated, where red component value R(0,1) in red pixel matrix 62 may be an average of the red component values R(0,0) and R(0,1) in red pixel matrix 52. Similarly, green component value G(0,1) in green pixel matrix 64 may be an average of the green component values G(0,0) and G(0,1) in green pixel matrix 54.
The second step in the conversion process is to perform a decimate mapping of the up-sampled matrices to form the 8-bit RGB diagonal mosaic patterned image suitable for display by the LCD. For example, in LCD matrix 70, pixel (0,0) is composed of four 8-bit values (R, B, B, and G). Similarly, for pixel (0,1), a different pattern of four 8-bit values (G, R, R, and B) make up the pixel. For pixel (0,0), the red component comes from red component value R(0,0) in red pixel matrix 62, the green component comes from green component value G(1,1) in green pixel matrix 64, and the blue components comes from blue component values B(1,0) and B(0,1) in blue pixel matrix 66. The component values that are not used are ignored.
The process as illustrated in FIG. 1 is wasteful as interpolation error is introduced during the up-sampling step. In addition, during the decimating step, two-thirds of the up-sampled image data is thrown-away. Computational resources are consumed by performing the up-sampling and decimation steps, and storage resources are also consumed for the up-sampled data.